package com.luoy.util;

import org.springframework.beans.BeanUtils;
import org.springframework.data.domain.Page;

import java.util.List;
import java.util.stream.Collectors;

/**
 * 获取pageVO对象
 * 封装了分页信息
 *
 * @author LUOY
 * @create 2018-06-08-下午6:53
 */
public class GetPageVOUtil {

    public static <T, S> PageVO<S> get(Integer page, Integer size, Page<T> itemPage, Class<S> s) {
        //page转pageVO lambda方式
        List<S> voList = itemPage.stream().map(t -> {
            S sVo = null;
            try {
                sVo = s.newInstance();
            } catch (InstantiationException | IllegalAccessException e) {
                e.printStackTrace();
            }
            BeanUtils.copyProperties(t, sVo);
            return sVo;
        }).collect(Collectors.toList());

        //封装数据
        PageVO<S> pageVO = new PageVO<>();
        pageVO.setItems(voList);
        pageVO.setCurrentPage(page);
        pageVO.setSize(size);
        pageVO.setTotal(itemPage.getTotalPages());
        return pageVO;
    }

    public static <S> PageVO<S> get(Integer page, Integer size, Page<S> itemPage) {
        PageVO<S> pageVO = new PageVO<>();
        pageVO.setItems(itemPage.getContent());
        pageVO.setCurrentPage(page);
        pageVO.setSize(size);
        pageVO.setTotal(itemPage.getTotalPages());
        return pageVO;
    }
}
